package com.ycrlkj.android.modulespublic.common.base;

import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.widget.ImageView;
import androidx.databinding.BindingAdapter;
import com.squareup.picasso.Picasso;
import com.ycrlkj.android.modulespublic.common.glide.GlideApp;

/**
 * DataBinding 给组件自定义属性
 *
 * 用法: 给 ImageView标签添加自定义属性 app:imageUrl="@{item.url}" 和  app:imageUrl="@{item.drawable}"
 *
 * 使用场影: dataBinding 绑定时, 给ImageView标签赋值
 */

public class ImageViewDataBindingAdapter {

    //加载网络图片
    //注解内值只有一个时, 不写大括号 {} 也能生效, 但是编辑器会报红, 所以这里不管是一个属性还是多个数性, 都用 {"imageUrl", "placeholder"} 数组形式
    @BindingAdapter({"imageUrl", "placeholder"})
    public static void loadImageFromUrl(ImageView imageView, String url, Drawable drawable){
        if(!TextUtils.isEmpty(url)){

            //使用picasso图片插件的写法
            //Picasso.get().load(url).placeholder(R.drawable.m_bg_ccc).into(imageView);
            //Picasso.get().load(url).placeholder(drawable).into(imageView);

            //使用glide图片插件的写法
            //Glide用法1: 此方法需要传context, 不方便, 使用第二种用法
            //使用glide图片插件的写法, 需要传一个context, 这里用 App.getContext() 类获取一个全局context
            //App.getContext() 是项目启动文件中自定义的
            //Context appContext = App.getContext();
            //Glide.with(appContext).load(url).placeholder(drawable).into(imageView);

            //Glide用法2: 写一个类继承AppGlideModule, 并做一些配置就可以直接使用GlideApp对象了 例如: (MyGlideModule extends AppGlideModule)
            //GlideApp.with(imageView).load(url).applyAvatar(144 * 2).into(imageView);

            GlideApp.with(imageView).load(url).placeholder(drawable).into(imageView);

        }else{
            //如果获取数据中图片url地址为空, 则加载灰色背景
            //imageView.setBackgroundColor(Color.GRAY); //灰色太深, 改为下面自定义颜色, 如有报错则改回来
            //imageView.setBackgroundColor(ResourceUtils.getColorIdByName("m_ccc"));
            //imageView.setImageDrawable(ResourceUtils.getDrawable(R.drawable.truck_gray_400x300));
        }
    }

}
